---
title: Prerequisite Check list
hide_title: true
---

import {
	AdvancedMarkdown,
	Aside,
	BuildConfigTool,
	Badge,
	BuildinfoIntroduction,
	BuildinfoBuildHelp,
	Card,
	CardGrid,
	Charts,
	Details,
	FileTree,
	GithubActions,
	Icon,
	LinkCard,
	Modal,
	Patchinfo,
	Scriptinfo,
	ScriptVersions,
	Steps,
	TabItem,
	Tabs
} from "/src/components/global.jsx"

<AdvancedMarkdown>

:::tip[Optional - Paid service for faster build times]
For faster build times you can consider a paid service like <Modal id="buildjet" label="buildjet.com"/> to use as self hosted runners with the Github Actions
:::

</AdvancedMarkdown>

## Prerequisite Check list

If you want to self host you need to be able to meet these conditions on your host in order to use the script.

🟩 Supported host build platforms
    - Debian: `trixie`
    - Ubuntu: `noble`
    - Alpine: `3.18` or greater

🟩 Build environment
    - <Modal id="docker" label="Docker"/> via a shell like <Modal id="bash" label="Bash"/> or <Modal id="powershell" label="Powershell"/>
    - <Modal id="docker-desktop" label="Docker Desktop"/>: `Windows` `MacOS` `WSL2`
    - WSL2
      - Run directly in the Debian or Ubuntu image ❌ (works but not recommended)
      - Via <Modal id="docker-desktop" label="Docker Desktop"/> ✅ (recommended method)
      - Docker installed in <Modal id="wsl2" label="WSL2"/> image ✅ (alternative recommendation)

🟩 Bash Shell script
    - This is 100% a modern bash shell script and it requires having access to bash to run it.

🟧 Host permissions

    - The script needs to install some system dependencies in order to proceed and if you do not have permission or access to do this or no access to docker to use a container you must find a more suitable host environment.
	- You can simply [fork the repo on Github](/qbittorrent-nox-static/github-actions) and create your own releases if you have no access to a suitable build host

🟥 Emulation requirements for cross building

    - `icu` `qtbase` and `qttools` requires `qemu` emulation to be available by default in order to cross build them.
	- This was reworked in script version `v2.2.2` and now the user has more choice of how to build.
	- Two env vars specific to dealing with this were introduced
	- `qbt_with_qemu` - this defaults to `yes` but if set to `no` if will enable `_host_deps` version of the modules that need a host version to be build before they can cross build.
		- this means longer build times as these modules are essentially built twice.
	- `qbt_host_deps` - defaults to `no` but if set to yes it will not build locally but instead pull in prebuilt host deps for the these modules avoiding the need to build them locally.
		- They are built and sourced from here https://github.com/userdocs/qbt-host-deps
		- This make build time equivalent to using `qemu` without the requirement of having `qemu`

	If you build using Qt6 you will need to have these dependencies installed on the host (not inside the docker), <Modal id="qemu" label="qemu and binmtfs"/>

<Tabs>
<TabItem value="Debian based Linux" label="debian">

```bash
sudo apt install qemu-user-static binfmt-support
```

</TabItem>
<TabItem value="Alpine linux" label="alpine">

```bash
sudo apk add qemu qemu-openrc
```

</TabItem>
</Tabs>
